package com.meatball.dji.common.mqtt.properties

import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.cloud.context.config.annotation.RefreshScope
import org.springframework.context.annotation.Configuration
import kotlin.properties.Delegates

/**
 * TODO mqtt配置文件
 *
 * @author 张翔宇
 * @since 2024年4月17日
 */
@Configuration
@ConfigurationProperties(prefix = "mqtt.basic")
class BasicProperties {
    lateinit var protocol: String
    lateinit var host: String
    var port: Int by Delegates.notNull()
    lateinit var username: String
    lateinit var password: String
    lateinit var clientId: String
    lateinit var path: String
}

/**
 * TODO ws模式
 *
 * @author 张翔宇
 * @since 2024年4月17日
 */
@Configuration
@ConfigurationProperties(prefix = "mqtt.drc")
class DrcProperties {
    lateinit var protocol: String
    lateinit var host: String
    var port: Int by Delegates.notNull()
    lateinit var path: String
    lateinit var username: String
    lateinit var password: String
}

/**
 * TODO 连接mqtt时最初需要订阅的主题
 *
 * @author 张翔宇
 * @since 2024年4月18日
 */
@Configuration
@RefreshScope
@ConfigurationProperties(prefix = "cloud-sdk.mqtt")
class InboundTopic {
    /**
     * 连接mqtt时最初需要订阅的主题，多个主题用","分隔。
     */
    lateinit var inboundTopics: String
}